package main

import "fmt"

func main() {
	var pointerV *int            // 指针变量
	var funcV func(int, int) int // function变量
	var interfaceV interface{}   // 接口变量
	var sliceV []int             // 切片变量
	var channelV chan int        // channel变量
	var mapV map[string]string   // map变量
	var errorV error             // error变量
	var arraryV [3]int           // 数组变量

	type Person struct {
		name string
		age  int
	}
	var structV Person // 结构体变量

	fmt.Println("pointer = ", pointerV)     // nil
	fmt.Println("func = ", funcV)           // nil
	fmt.Println("interface = ", interfaceV) // nil
	fmt.Println("slice = ", sliceV)         // []
	fmt.Println("slice = ", sliceV == nil)  // true
	fmt.Println("channel = ", channelV)     // nil
	fmt.Println("map = ", mapV)             // map[]
	fmt.Println("map = ", mapV == nil)      // true
	fmt.Println("error = ", errorV)         // nil
	fmt.Println("arrary = ", arraryV)       // [0, 0, 0]
	fmt.Println("struct = ", structV)       // {"" 0}
}
